<?php
/**
 * 项目公共函数库
 * @author 小陈叔叔<Jason.Chen>
 */

/**
 * 重写的U()方法
 * @author 小陈叔叔<Jason.Chen>
 */
function Url($url='', $vars='', $suffix=true) {
	return U($url, $vars, $suffix, $domain = true);
}

/**
 * 时间戳格式化
 * @param int $time
 * @return string 完整的时间显示
 * @author 小陈叔叔<Jason.Chen>
 */
function time_format($time = NULL,$format='Y-m-d H:i'){
    $time = $time === NULL ? NOW_TIME : intval($time);
    return date($format, $time);
}

/**
 * 调用系统的API接口方法（静态方法）
 * api('User/getName','id=5'); 调用公共模块的User接口的getName方法
 * api('Admin/User/getName','id=5');  调用Admin模块的User接口
 * @param  string  $name 格式 [模块名]/接口名/方法名
 * @param  array|string  $vars 参数
 * @author 小陈叔叔<Jason.Chen>
 */
function api($name,$vars=array()){
    $array     = explode('/',$name);
    $method    = array_pop($array);
    $classname = array_pop($array);
    $module    = $array? array_pop($array) : 'Common';
    $callback  = $module.'\\Api\\'.$classname.'Api::'.$method;
    if(is_string($vars)) {
        parse_str($vars, $vars);
    }
    return call_user_func_array($callback, $vars);
}

/**
 * 检测用户是否登录
 * @return integer 0-未登录，大于0-当前登录用户ID
 */
function is_login(){
    $user = session('user_auth');
    if (empty($user)) {
        return 0;
    } else {
        return session('user_auth_sign') == data_auth_sign($user) ? $user['uid'] : 0;
    }
}

/**
 * 数据签名认证
 * @param  array  $data 被认证的数据
 * @return string       签名
 */
function data_auth_sign($data) {
    //数据类型检测
    if(!is_array($data)){
        $data = (array)$data;
    }
    ksort($data);
    $code = http_build_query($data);
    $sign = sha1($code . C('DATA_AUTH_KEY'));
    return $sign;
}

/**
 * 系统非常规MD5加密方法
 * @param  string $str 要加密的字符串
 * @return string 
 * @author 小陈叔叔<Jason.Chen>
 */
function ucenter_md5($str, $key = ''){
    if (empty($key)) {
        $key = C('DATA_AUTH_KEY');
    }
    return '' === $str ? '' : md5(sha1($str) . $key);
}